Geant4中 定位 (段错误segmentation fault)的位置

您所在的位置:网站首页 gdb 多线程定位段错误 Geant4中 定位 (段错误segmentation fault)的位置

Geant4中 定位 (段错误segmentation fault)的位置

2024-07-13 11:09| 来源: 网络整理| 查看: 265

引入

报错不可怕,可怕的是不知道哪错了,Geant4报错给一个光麻麻的 segmentation fault,真是不知道该从哪里检查自己的代码。为此,可以使用到大杀器 gdb 来进行调试。

准备

Geant4使用gdb进行调试的准备(针对Ubuntu):

第一次使用时,安装gdb sudo apt install gdb -y设置 core 文件大小限制 ulimit -c unlimited 如果报错了,尝试: sudo sh -c ulimit -n 65535 && exec su $LOGNAME想要每次开机自动执行:echo "ulimit -c unlimited" >> ~/.bashrc 设置 cmake,在cmake编译前,在 CMakeLists.txt 中追加如下三行:SET(CMAKE_BUILD_TYPE "Debug") SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") 效果

这样正常运行程序,如果报错了,就会在当前目录下生成 core 文件,使用gdb调试 gdb 程序名 core 使用 where指令即可找到报错行。效果如下: 在这里插入图片描述

最后

祝一切安好~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3